/*
 * @Author: wangshuixin 2412658453@qq.com
 * @Date: 2024-11-11 10:13:26
 * @LastEditors: wangshuixin 2412658453@qq.com
 * @LastEditTime: 2024-12-11 17:03:40
 * @FilePath: \sr_system_manager_ui\src\api\resultsManagements\request.ts
 * @Description: 成果管理 公共 Api接口
 */
import request from '@/utils/request'
import { AchvCheckResulPageReqOpenDTO, AchvPageReqDTO, PageBeanAchvCheckResulVO, PageBeanAchvInfoPageVO, AchvInfoVO } from './types'
import type { AppStateChangeRespDTO, DepartmentListVO } from '@/types/index'
import type { AppraiseStandardDTO, ApprovalPageRespVO, AccountListVO } from '@/types/resultsManagement'

export const mockBaseURL = '' //'http://127.0.0.1:4523/m1/5422095-0-default'

// 删除成果
export function deleteResultsManagementApi(params: { id: string }) {
  return request<AppStateChangeRespDTO>({
    url: `/achv/common/delete`,
    method: 'post',
    data: params
  })
}

/**
 * 审核成果
 * @param {string} id 成果id
 * @param {number} status 状态（0：待提交，1：待科研处审核，2：科研处审核通过（待学院审核），3：科研处审核不通过，4：学院审核不通过，5：已登记）
 * @param {string} description 审核描述
 * @param {string[]} fileIds 审核附件id
*/
export function approveResultsManagementApi(params: { id: string, status: number, description?: string, fileIds?: string[] }) {
  return request<AppStateChangeRespDTO>({
    url: `/achv/common/approval`,
    method: 'post',
    data: params
  })
}

// 审核日志 查询
export function auditLogApi(params: { logId: string }) {
  return request<ApprovalPageRespVO[]>({
    url: `/base/api/approval/log/list`,
    method: 'post',
    data: params
  })
}

// 批量审核成果
export function approveBatchResultsManagementApi(params: { ids: string[], status: number, description?: string, fileIds?: string[] }) {
  return request<AppStateChangeRespDTO>({
    url: `${mockBaseURL}/achv/common/approvalBatch`,
    method: 'post',
    data: params
  })
}

// 科研统计  分页
export function achvCommonPage(params: AchvPageReqDTO) {
  return request<PageBeanAchvInfoPageVO>({
    url: `/achv/common/page`,
    method: 'post',
    data: params
  })
}

// 考核结果分页  分页
export function achvCommonCheckResultList(params: AchvCheckResulPageReqOpenDTO) {
  return request<PageBeanAchvCheckResulVO>({
    url: `/achv/common/checkResultList`,
    method: 'post',
    data: params
  })
}

/**
 * 考核标准
 * @param {string} assessmentMethodId 考核办法id，不传查询当前生效的考核办法
 * @param {string} calculationId 切换计算方式为等同填写，计分标准id
 * @tip 成果管理模块 >> 科研分的量化考核指标，这两个参数不填
*/
export function appraiseStandardApi(params: { assessmentMethodId?: string, calculationId?: string }) {
  return request<AppraiseStandardDTO[]>({
    url: `${mockBaseURL}/assessment/api/assessment/method/listAssessmentCalculation`,
    method: 'post',
    data: params
  })
}

/**
 * 获取科研分
 * @param {number} amount 金额
 * @param {string} methodCalculationId 计算标准ID
*/
export function getResearchScoreApi(params: { amount?: number, methodCalculationId?: string }) {
  return request({
    url: `${mockBaseURL}/achv/common/getResearchScore`,
    method: 'post',
    data: params
  })
}

/**
 * 成果列表查询
 * @param params createdBy 创建人 name 成果名 status 审核状态（0：待提交，1：待学院审核，2：学院审核通过（待科研处审核），3：学院审核不通过，4：科研处审核不通过，5：已登记）
 * @returns 
 */
export function getResultsCommonListApi(params: {createdBy?:string, name?: string, status?: number}) {
  return request<AchvInfoVO[]>({
    url: `/achv/common/list`,
    method: 'post',
    data: params
  })
}

/**
 * 人员列表不分页
 * @param {string} codeOrPhone 工号或手机号
 * @param {boolean} inside 是否校内
 * @param {string} name 名称
 * @param {string} nameLike 模糊查询
 * @param {string} phone 手机号
 * @param {boolean} status 启用状态
*/
export function getAllPersonListApi(params: {codeOrPhone?: string, inside?:boolean, name?: string, nameLike?: number, phone?: string, status?: boolean}) {
  return request<AccountListVO[]>({
    url: `/resource/api/account/list`,
    method: 'post',
    data: params
  })
}

/**
 * 学院、部门不分页 查询
 * @param {string} nameLike 部门名称模糊查询
*/
export function getAllDepartmentListApi(params?: {nameLike?: string}) {
  return request<DepartmentListVO[]>({
    url: `/resource/api/department/list`,
    method: 'post',
    data: params
  })
}

/**
 * 成果审核批量
 * @param {string} description 审核描述
 * @param {string[]} fileIds 审核附件id
 * @param {string[]} ids 主键ID集合
 * @param {number} status 状态（0：待提交，1：待科研处审核，2：科研处审核通过（待学院审核），3：科研处审核不通过，4：学院审核不通过，5：已登记）
*/
export function approvalBatchApi(params: {description?: string, fileIds?: string[], ids?: string[], status?: number }) {
  return request<AppStateChangeRespDTO>({
    url: `/achv/common/approvalBatch`,
    method: 'post',
    data: params
  })
}

/**
 * 导出 科研统计
*/
export function exportResearchStatisticsApi(params: { createdBy?: string, departmentId?: string, idList?: string[] }) {
  return request({
    url: `/achv/common/export`,
    method: 'post',
    responseType: 'blob',
    data: params
  })
}

/**
 * 导出 考核/奖励 结果
*/
export function exportResultListApi(params: { createdBy?: string, departmentId?: string, idList?: string[] }) {
  return request({
    url: `/achv/common/exportResultList`,
    method: 'post',
    responseType: 'blob',
    data: params
  })
}